package Map;

import java.util.HashMap;
import java.util.Map;

/**
 * java.until.Map   查找表
 * Map是Java集合框中的一员，但Map不是集合，没有实现Collection接口
 * Map体现的结构是一个多行二列的表格。其中左边是key，右边是value
 * Map总是根据key提取对应的value
 * Map要求key不能重复(不能有equals比较为true的两个key同时在Map中存在)
 *
 * Map是一个接口，常用实现类:
 * java.until.HashMap:散列表，使用散列算法实现的Map
 * java.until.TreeMap:使用二叉树算法实现的Map
 */
public class MapDemo {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        /*
           V put(K k,V v)
           将一组键值对存入Map中
           返回值为被替换的Value:由于Map不允许重复的key，因此如果是用重复的key存放
           则是将存入的value替换原有的value并将被替换的value返回。否则返回值则为null
         */
        Integer value = map.put("语文",99);//语文不存在没有替换value
        System.out.println(value);//null
        map.put("语文",99);
        map.put("数学",97);
        map.put("英语",98);
        map.put("化学",94);
        map.put("物理",95);
        System.out.println(map);
        value = map.put("英语",55);
        System.out.println(value);
        map.put("英语",55);

        value = map.get("语文");
        System.out.println(value);
        value = map.get("体育");
        System.out.println(value);

        int size = map.size();
        System.out.println("size:"+size);

        boolean ck = map.containsKey("语文");
        boolean cv = map.containsValue(99);
        System.out.println("是否包含给定的key:"+ck);
        System.out.println("是否包含给定的value:"+cv);
        /*
           V remove(Object key)
           根据给定的key删除对应的这组键值对。返回值为这个key对应的value
         */


        value = map.remove("语文");
        System.out.println(map);
        System.out.println(value);

    }
}
